within BusinessSimulation.Examples;

model SimpleProductionChain "A first example"
  extends Icons.Example;
  inner ModelSettings modelSettings(modelDisplayTimeBase = BusinessSimulation.Types.TimeBases.seconds, dt = 0.25, modelTimeHorizon = 60) annotation(Placement(visible = true, transformation(origin = {-135, -75}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  ModelOutput modelOutput "Main output for the model" annotation(Placement(visible = true, transformation(origin = {126.074, 10}, extent = {{-10, -10}, {10, 10}}, rotation = 0), iconTransformation(origin = {90, 0}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));

  expandable connector ModelOutput "Expandable connector for model output"
    extends Icons.DataOutPort;
    Amount inventory "Finished goods inventory";
    Amount installedBase "Installed base for the product";
    AmountRate producing "Rate of production";
    AmountRate shipping "Rate of shipping to customers";
    AmountRate scrapping "Rate of scrapping at the end of useful life";
  end ModelOutput;
protected
  Converters.ConstantConverter productionRate(redeclare type OutputType = BusinessSimulation.Units.AmountRate, value = 100) annotation(Placement(transformation(origin = {-120, 24}, extent = {{-10, -10}, {10, 10}})));
  Stocks.MaterialStock inventory(initialValue = 0, redeclare replaceable type OutputType = Amount) "Finished goods inventory" annotation(Placement(visible = true, transformation(origin = {-50, -5}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Flows.Unidirectional.Transition shipping(hasConstantRate = false, rate(displayUnit = "each/mo") = 3.80517503805175e-06, redeclare replaceable type OutputType = AmountRate) "Shippment to the customer at an exogenous rate" annotation(Placement(visible = true, transformation(origin = {-10, -5}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  SourcesOrSinks.Growth producing(hasConstantRate = false, rate = 0, redeclare replaceable type OutputType = AmountRate) "Production at a constant rate" annotation(Placement(transformation(origin = {-90, -5}, extent = {{-10, -10}, {10, 10}})));
  Stocks.DelayN installedBase(hasConstantDelayTime = false, n = 4, delayTime = 60, initialValue = 0, redeclare replaceable type OutputType = Amount) "Product stays in use for around 5 years" annotation(Placement(visible = true, transformation(origin = {30, -5}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Flows.Unidirectional.OutflowDynamicStock scrapping "After its useful life has expired, products will be discarded" annotation(Placement(visible = true, transformation(origin = {70, -5}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  InformationSources.RampInput firstTimePurchases(offset = 10, height = 90, startTime = 6, duration = 18, redeclare replaceable type OutputType = AmountRate) "Ramping up from 10 to 100 units per month starting at 6 mo for 18 mo" annotation(Placement(visible = true, transformation(origin = {-40, 25}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Converters.ConstantConverterTime usefulLife(value = 60) "How long will a product be used on average" annotation(Placement(visible = true, transformation(origin = {5, 25}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  SourcesOrSinks.Cloud cloud1 annotation(Placement(visible = true, transformation(origin = {110, -5}, extent = {{10, -10}, {-10, 10}}, rotation = 0)));
equation
  connect(inventory.outflow, shipping.portA) annotation(Line(visible = true, origin = {-30, -5}, points = {{-10, 0}, {10, 0}}, color = {128, 0, 128}));
  connect(shipping.portB, installedBase.inflow) annotation(Line(visible = true, origin = {10, -5}, points = {{-10, 0}, {10, 0}}, color = {128, 0, 128}));
  connect(producing.massPort, inventory.inflow) annotation(Line(points = {{-80, -5}, {-60, -5}}, color = {128, 0, 128}));
  connect(installedBase.outflow, scrapping.portA) annotation(Line(visible = true, origin = {50, -5}, points = {{-10, 0}, {10, 0}}, color = {255, 0, 0}));
  connect(scrapping.portB, cloud1.massPort) annotation(Line(visible = true, origin = {90, -5}, points = {{-10, 0}, {10, 0}}, color = {128, 0, 128}));
  connect(firstTimePurchases.y, shipping.u) annotation(Line(visible = true, origin = {-20.667, 18.333}, points = {{-11.333, 6.667}, {5.667, 6.667}, {5.667, -13.333}}, color = {1, 37, 163}));
  connect(usefulLife.y, installedBase.u) annotation(Line(visible = true, origin = {20.333, 18.333}, points = {{-9.333, 6.667}, {4.667, 6.667}, {4.667, -13.333}}, color = {1, 37, 163}));
  connect(producing.y, modelOutput.producing) annotation(Line(points = {{-70.358, -3.067}, {-70.358, 1.533}, {140.716, 1.533}}, color = {192, 192, 192}, visible = true, origin = {-14.642, 8.467}));
  connect(shipping.y, modelOutput.shipping) annotation(Line(visible = true, origin = {38.691, 8.467}, points = {{-43.691, -3.067}, {-43.691, 1.533}, {87.383, 1.533}}, color = {192, 192, 192}));
  connect(scrapping.y, modelOutput.scrapping) annotation(Line(visible = true, origin = {92.025, 8.467}, points = {{-17.025, -3.067}, {-17.025, 1.533}, {34.049, 1.533}}, color = {192, 192, 192}));
  connect(inventory.y, modelOutput.inventory) annotation(Line(visible = true, origin = {12.025, 8.467}, points = {{-57.025, -3.067}, {-57.025, 1.533}, {114.049, 1.533}}, color = {192, 192, 192}));
  connect(installedBase.y, modelOutput.installedBase) annotation(Line(visible = true, origin = {65.358, 8.467}, points = {{-30.358, -3.067}, {-30.358, 1.533}, {60.716, 1.533}}, color = {192, 192, 192}));
  connect(productionRate.y, producing.u) annotation(Line(points = {{-114, 24}, {-95, 24}, {-95, 5}}, color = {1, 37, 163}));
  annotation(experiment(StartTime = 0, StopTime = 60, Tolerance = 1e-06, Interval = 0.12), Documentation(info = "<html>
<p class=\"aside\">This information is part of the Business Simulation&nbsp;Library (BSL). Please support this work and <a href=\"https://www.paypal.com/donate/?hosted_button_id=GXVZT8LD7CFXN\" style=\"font-weight:bold; color:orange; text-decoration:none;\">&#9658;&nbsp;donate</a>.</p>
<p>This introductory example continues the example given in the →<a href=\"modelica://BusinessSimulation.UsersGuide.Tutorial.StrategicBusinessSimulation\">Tutorial</a> (please read that section first, if you have not done so already). Here we consider a simple production chain for a company (e.g., ACME) producing a durable good (e.g., intruder alarm systems). Products will be <em>produced</em> at a constant rate of 100 units per month [<code>#/mo</code>]. The finished goods will be collected in a finished-goods <em>inventory</em> from where they will be shipped to customers. The inventory will be empty at the start of the simulation.</p>
<p>In this introductory example we will assume that there are only first-time purchases and that the rate of purchasing is also the rate of shipment to the customers. Initially the purchase rate will be 10 units per month, but due to some marketing initiative we assume that starting in month six the rate will ramp up to 100 units per month within 18 months after which it will remain at that level.</p>
<p>Units will remain in use for an average useful life of 5 years. After the useful life has expired, the units will be discarded. In this example, we will not consider replacement purchases.</p>
<p>The graph below shows different distributions for the useful life given an average life of 5 years. The order of the DelayN component determines the variance for the lifetime distribution. The dashed red lines show the 95th percentil and the red value above indicate the corresponding order <code>n</code>. Since we assume, that 95% of the products will have been discarded after 10 years, it turns out that <code>n = 4</code> produces a delay distribution matching the assumption.</p>
<table cellspacing=\"0\" cellpadding=\"2\" style=\"margin-left: auto; margin-right: auto;\"><caption align=\"bottom\">Distributions of Useful Life for Different Delay Orders n</caption>
<tbody>
<tr>
<td><img src=\"modelica://BusinessSimulation/Resources/Images/Examples/SimpleProductionChain/UsefulLifeDistributions.png\" alt=\"UsefulLifeDistributions.png\" width=\"500\"></td>
</tr>
</tbody>
</table>
<p>In the lower half of the diagram we have included an <em>event-driven process chain (EPC)</em> model typically used in Business Process Modelling (BPM). It offers a nice analogy and allows the transition to a system dynamics perspective coming from that background: While the process is valid for a single unit, in the continuous time simulation we are aggregating the <em>processes</em> (green) and <em>events</em> (red) over time. An event will thus turn into a stock counting the amount of \"material\" that is in a corresponding <em>state</em> at and given time. A process&nbsp;corresponds to a transition between states at a certain rate given as <em>entities per period</em>.</p>
<p>EPC always start and end with an event and accordingly we always have to start and end with a stock. In this case the first event is \"hidden\" as a stock with an <em>infinite capacity</em> inside the component of type <code>Growth</code>. <em>AvailableProducts</em> corresponds to the stock <em>inventory</em>, while \"<em>product received</em>\" pertains to <em>installedBase</em>.</p>
<h6>Model Output</h6>
<ul>
<li>The current <strong>inventory</strong> and the <strong>installed base</strong>.</li><br>
<li>The current rates of <strong>producing</strong>, <strong>shipping</strong>, and <strong>scrapping</strong>.</li><br>
</ul>
<h4>Notes</h4>
<p>A lot of components will refer to variables contained in <code>modelSettings</code>. There should always be an instance of that class in the top level scope of any model.</p>
<h4>See also</h4>
<p>
<a href=\"modelica://BusinessSimulation.UsersGuide.Tutorial.StrategicBusinessSimulation\">Tutorial.StrategicBusinessSimulation</a>,
<a href=\"modelica://BusinessSimulation.Examples.SimpleProductionChainII\">SimpleProductionChainII</a>, <a href=\"modelica://BusinessSimulation.Examples.SimpleProductionChainIII\">SimpleProductionChainIII</a>, <a href=\"modelica://BusinessSimulation.Stocks.DelayN\">DelayN</a></p>
</html>", figures = {Figure(title = "Stocks", identifier = "stocks", preferred = true, plots = {Plot(curves = {Curve(y = modelOutput.installedBase, legend = "installedBase"), Curve(y = modelOutput.inventory, legend = "inventory")})}, caption = "Inventory levels off when production and shipping rates are identical."), Figure(title = "Flows", identifier = "flows", plots = {Plot(curves = {Curve(y = modelOutput.producing, legend = "producing"), Curve(y = modelOutput.scrapping, legend = "scrapping"), Curve(y = modelOutput.shipping, legend = "shipping")}, y = Axis(unit = "each/mo"))}, caption = "Shipping ramps up to the rate of production, while scrapping starts to become notable after about two years.")}, revisions = "<html>
<ul>
<li>Updated plots in v2.0.0.</li>
</ul>
</html>"), Diagram(graphics = {Text(visible = true, origin = {0, 65}, textColor = {76, 112, 136}, extent = {{-140, -6}, {140, 6}}, textString = "Simple Production Chain", fontName = "Lato", textStyle = {TextStyle.Bold}), Bitmap(visible = true, origin = {-11.743, -50.767}, fileName = "", imageSource = "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DAAgbghhAABt4sMPP3QXjx8PdvAxftV2Hy4s1FqzWBDCAADihhAGANBGrl665BYiutcVbs33XnjBXbV7lxUQQhgAQNwQwgAA2siDBw/c8NCQ++zb3w529jE+1VbljTZT2xUVQhgAQNwQwgAA2szt27fd9JtvBjv8GJ+X+/rc7bm5WusVk50Swj7//HN3584dNzJRdWdHzrmB4SE3tBGgsViq3UqjI+781GTSnmpXgE6HEAYAkAFTFy64D7q7g51+jEe10dTISK3Vikunh7D79++76uVLbnCj8/7Td37vvvrKfveVF3/svvyzp9yXer7t/jcWRrWX2k3tp3b8t2NH3NmhUtK+auedgH7PUDjFxi3SPkMIAwDIgNXVVVcpldza7t3Bzj/mr9pGbaS2KjqdHMKuXp9xZzY66d848vJGB/47wY49Flu169//9sWknW/cuFFr+c5lemLCLfb2BusSbt3Fnh43feFCbavGDyEMACAj5mdn3fXDh4MHD8zf67/5TdJGnUAnhjCdolapnnfdx/vc3zz/z8HOO3aWaueuY68n7d6ppyguLS25ybc2/k4DNQkbd7K/P9mmRYAQBgCQIRfOnXN/fPrp4MED81NtcmF4uNZKxafTQpg64EMjFbe771fBzjp2tk+89ouk/TstiK2trbnK0JD7ZO/eYF3CxtW21DbVto0dQhgAQIbcvXvXjZ8+7f77iSeCBxDMXrWF2kRt0yl0WgjTSMiTBLAdbRLEzo/V9ojOYGZqyt06cCBYl3D7aptq28YOIQwAIGNmr1517770UvDggdmrtpi9eLHWOp1BJ4UwfQes5+03gx1z3Fnq1ETtD53A8vKyq548GaxJ2LzVEyeSbRwzhDAAgIz54osv3Gi57D7+/veDBw/MTrXByOBg0iadwMil64mH3h5OQtiT3S//+bXPHjyszVUcdKUzXZyB74Ch1H4wsLE/FP2qievr625s4xiwsm9fsC5h82rbahtrW8cKIQwAIAc+/PBDN3H8ePDggdmpNvhwYaHWKsXn6//yQhK+Qt65+3FtruKgy5TrKoihDjnuTHXVRO0XRebGtWvu5sGDwZqErVPbWNs6VghhAAA5cWViwi3s3x88eGD7XejtdVfHOus7JgeOng4GsKdf6qvNURx0EQbdB4zL0KOv9oczpVJhL9KxsrLixs6edeu7dgXrErZObePxgYFkm8cIIQwAICcePHjw6OaSe/YEDyDYPrXNte3VBp2ERrtCIUynJxaNO3fuuGePHw12xHFn+8yxI8n+UUSqlYpb7uoK1iVsvdrW1XK5tvXjghAGAJAji4uLbvro0eDBA9vnlb4+d3turtYKnUXolMQinoo4MlF1X31lf7ATjjtb7RfnpyZre0px0H0IZ44cCdYkbJ8z
hw65+fn5WivEAyEMACBnJsfG3NIzzwQPHth6ta2nRkdrW7/zSJ+SqItzFJGzI+fcV178cbATjjtb7Rcnzg3V9pRisLq66iqlklvbvTtYl7B9aptXBgeTNogJQhgAQM7owKAr9H3+5JPBAwi2Tm3jGA/GrURXQvRDmEJZERkYHnJf/tlTwU447my1X5weLtX2lGIwNT7ulp57LliXsP0udXcnbRAThDAAgAjQaSrXX301ePDA1nn9lVeSbd3J6FL0fghTKCsi+s7elwIdcETtF9o/isLi3Jyb7u8P1iTMTp2GvhDR1XAJYQAAkXChXHYf/ehHwYMHNq+27fkCddyaQVdDVAD72nd7Cnl/MKFOdqgDjiiLEsJ0TzN9Vi7AlL92QaZY7jNHCAMAiISPPvrInT992rknnggeQLAJN7aptq228U7g1NilJIQV8dL0BiEM61mUEDY9MeEWe3vDdQkzd7Gnx01fuFBrnXwhhAEARMTs1atu7uc/Dx48cPvO/eIX7vrFi7Wt3PnYKYlFPRVREMKwnkUIYUtLS27yrbeCNQnzc7K/P2mbvCGEAQBExBdffOFGhofdJ9/7XvDggY2rbTlSKiXbdiehS9UX8dL0BiEM6xl7CFtbW3OVjc/4yd69wbqE+ak2UduojfKEEAYAEBnJf0//8IfgwQMbd/L4cbf03nu1rbtzuHSj2L8zIQzrGXsIm5macrcOHAjWJMxftY3aKE8IYQAAEXJF3yPgcsZNq+9iXBkbq23VzkQjfPfu3XM3br7rLk5ddsOVUVcaPudKQ8OP3HhcHhlzFyY2OoW3biXzFgFCGNYz5hC2vLzsqidPBmsSxmP1xImkrfKCEAYAECF2RS1s3liuhNVKLHgpdJ0pDbm+P5xwP3npNbfvp79yu7pecF//wfPu/+75SaIef+uZF90/Pfuy+9f/POSOnzqTbJepS9NRX6hEnzHU+UaU2j9iZH193Y2Vy25l375gxx/jUW2ktlKb5QEhDAAAoEAsffihOzcymgQvhSqFLLsn2FZVOFNge/PtU8lI2Z07d2prjwdCGNYz1hB249o1d/PgwWCnH+NTbaU2ywNCGAAAQAHQyJeFL41shcLVdtTI2dunBpIwFtOpioQwrGeMIWxlZcWNnT3r1nftCnb4MT7VVuMDA0nbZQ0hDAAAIHL0fa+zg6Vk9EqjWKEw1aw6XfH0mcHke2MxQAjDesYYwqqVilvu6gp29jFe1WbVcrnWitlBCAMAAIgUffdLF9R4vf9t93d7nw2Gp1aqgHf4zbfc2Pn8b2ZKCMN6xhbC5mdn3cyRI8FOPsbvzKFDbn5+vtaa2UAIAwAAiJCHDx+6yti4e/7Xv2vb6Ndm/sfLryWnPuZ5bzVCGNYzphC2urrqKqWSW9u9O9jBx/hV21UGB5O2zApCGAAAQGQo/Gg0Slc8DIWkLNRFP8rnKrVPlD2EMKxnTCFsanzcLXFLkcK71N2dtGVWEMIAAAAiQ6cgagQsFI6ytPeV3+V2aiIhDOsZSwhbnJtz0/39wU49Fs8rfX1uYWGh1rrthRAGAAAQEXPz867/nVOZn4K4mfqO2Mz12dqnyw5CGNYzhhBm93O8v2dPsEPf0e7f/2gjhKYVWLVl0qYZ3F+SEAYAABAJukS8rlAYSwCT+iwnTp/J/MbOhDCsZwwhbHpiwi329gY78x2vTtvTZd1D07aq1qGwE5qWo4s9PW76QvvPACCEAQAARMJwZTS5VHwoDOWp7ks2XD5X+5TZQAjDeuYdwpaWltzkW28FO/E7wvfff2Ro2ladnW1+HW1ysr8/aeN2QggDAACIAI006UbMoRAUg29sfLY7d+7UPm37IYRhPfMMYWtra66y8f6f7N0b7MDnrp0qqO+qGX7Y0WP/AhSaX6+nb1hs80t/fs0n9ZqtT4HKn9cf4Uovq9fSp/vZuiJRbas2Vlu3C0IYAABAzuhqiMPnKm5X1wvBABSDX//B8xsd3+HaJ24/hDCsZ54hbGZqyt06cCDYeY9CCz0WeCyMWdiyAGTP7TU/qGlZe27rs/n1uv9cy/ohyh/hCi1r84qIL2qiNlZbtwtCGAAAQM5oFOxIi0bBLlx9t7ZW5w69PRycZ7v+6kh/ZqNhhDCsZ14hbHl52VVPngx22qNRIcgfiVIAEhZ4hB+a9NifX2od/qiVP9JloU6Pbd0WsqSWs/nTAc0MLReh1RMnkjZvB4QwAACAnNEl6XVfrlDwadR7q5/V1urce0t/DM6zXfV9tYuT7fvPsA8hDOuZRwhbX193Y+WyW9m3L9hhj0Y/BEl/JMwPUP78/iiY1HO9HgpLfkALrU/odf99/ekyFPwiVG2tNlfbtxpCGAAAQM6cKQ25v9v7bDD4NOIP/vP1ZH1/vPdJ8lM80fVicN7tqCslDm581iwghGE98whhN65dczcPHgx21qNS4UYByJ4rNFngUfixAGWmQ5u0EaxQkNI0C21+IJNaRuhxKKCZWi4d/CJVba62bzWEMAAAgBz59NNP3fFTZ4Khp1Gn311M1lm6eNV98Md7f34cmne76gIdWVyuPvYQtrh6z71+fTI4LWavfnTHlW/PBacVyaxD2MpG0Bg7e9at79oV7KhHo41cWaiy53ZKoILPZqNe/nMLbba8hTrNJ2x9fgiz0GXL2nNbVj9tOS1TkBCmNh8fGEj2gVZCCAMAAMiR27dvu+d//btg4GnUzx78KVmnRr/eKl9MHmtULDTvdtVpkzdu/uV7Z1vhswcPk++n3bn7ce2VxxN7CBNPj5wMTlPIEaFpefvxnx5s+rm3qtaRdwDdTgjTfrhdqpWKW+7qCnbSo1IhRyHIDwwWfKSNcPnLSB8LVabCkmHrt5ExC2nC1u2HK39Zf72az7B1Razavlou1z5wayCEAQAA5Ii+D9aKe4P99LV3kvVpBMxeW/v8i+Q1naboz9uMumfY+eqjgLdVFL5s+a//ywvuwNHT7tKN92pTw8Qcwv72zZeSzxiaFrP2ufUzNH2rtmIdzbqdEKb97+mX+tybg+MNBbJbN264mSNHgp3z6CzQaX5Fc+bQITc/P1/bK5qHEAYAAJAj5ZGxJNhYSNmuNxYe3VjUP/1QF+YQumKiP28z6jL6Z4Ya+4+wH8LSqlN8auxSbc6/EEsI02mHhgUPjQJpNMhGvIQ/MuSPFGkenQIojc1GouxUwdB76qf/nppXr2tdPprur1PLGJqm57Y+kZ43/XsYeh9N87F15WGjIUyhK7TvKZDVG6FdXV11lVLJre3eHeyYR6dGm0IjXdi02gcqg4PJPtEKCGEAAAA5Uho+l9yDK91BbFQb9fIvxGGnJOqKif68zaiLc4Reb4XqFNtpizGEMAtE9tweWxCywOPPZ+HGwpMFKgs3Ck/+On0t9FhI03wWtiwA2XP/NXsvC2T2XOuz+e1z+etLhyix2bI2b3qb5KUuZPO17/YkI6vmk90vu+/+9NVE7Uvms6++lfwM7XOmlgmdMju1EWiWnnsu2CmPUmHfwcKWu9TdnewTrYAQBgAAkCODQ8NNXxnRwpZ/KqJp4UynK6anbcd2hjDrCL97+04UIUwhJB1UpB+OpB9MLAjZNC1vYc3mDa1TCgtrUu9h6w0tp+f+/FL4o1b+NK3LPovW7f8O/ucOBTQzvVxehvafVqn9UCNki3NzbppAgymv9PW5hYWF5O+lGQhhAAAAOVLaCGHNBhs77VBhbLNpOl0xPW27Nnoq2GanI2okwzq8Cl4+sZyOqDAi/OAhbLRK+uFGPy042eiTjS5Jrcem+6bDm9R89r7+e0ib31+3vZ+mhcKSTdPj9Pr8z+2/b9pQ8MvDUwNnklMMtW+Z2of0XUM5cun6n9XprtrHQvugafui/RPg4cOHyT5494c/DHbEceeqfUL7xn1diKQJCGEAAAA50uzpiDr9UGjEKzTdLtihKyeGpjeqRu00etcIfghTZ1enh6mjXO/iCLGEMOmHG3vsT/eDicKLhRvNnx5R0nM//Jha3kKQKWy9Ws4ClNRjYc+lP4KVDlKaJiy0CX99/udKBzRf4Qe/vGz0HwEKVv5+nA5doX1Rox3TR48GO+K4c9VImEZJm4UQBgAAkCPDldHkYhd+B7ERdSEOoRGv0HRpl64PjZQ1qgKjgmMjqINbr7MbIu8QpgBjIcUCj8KHH3SkhTILJppmwUlBxp9mz21ZX72fP03P7X3S7+G/Zp/Rntt7a3kLdfb5/c8tbFnNJ2xZPbdlpYU5fzvYtLzcTgjTd8Z0ZU6Njm11P0y+E9bdHeyM484z+U7Y6Ght72gOQhgAAECOXL5yze376a+CgWcr2k2Z6wUsu3JivaC2VXU5/fLo+WR97SSGkTAfCywKJBZKpAUTPU6HJQUZzetjy6VVQPLn9QNTOviZFuoM+4zSPovQslqH/7n997L12+f2lxX+ejWf8NeVh42GsO1SuKsjFlmd3hfxd/CSqyNu7AtcHREAAKADmLk+u+0Qpvt/ic1ORTTtlMTHzbcV9VkVHNtNDCGsWRVY/ABTT2EhCB9vViFMzM/OumuHDwc75jtSuzpgK2+ybDd9Dk2LRO0D2hdaBSEMAAAgRz766CP39qmBYOB5nFs5FdG0UxJ1WmBo+lb97e/fTj5zuyl6CLPRpNC0tApqoZEu3NwsQ5ioVipuuasr2DnHFqhgp5Gw0LQIVNtXy43dH/FxEMIAAAByZrA01PRl6rNQV3EcGCy5L754dNn7dlL0ELbZKYQhdVqh/x0sfLxZh7CVlRU3PjDg1nftCnbSo1FBxkaq/FDj8/77f3ndRqAMe73eMrohtEaEdOqg8Jexafbcp977ahl/ekSqzdX22gdaCSEMAAAgZ65cvdrU98Ky8lvPvOhGxi/UPnV7KXoIw/aadQgTN65dczcPHgx21KPQgo0fvuw1BTP/uX6mp+mnglC9ZfRcKIClX/ef2+Otvq//PDLV5mr7VkMIAwAAyBmd3vd6/9vB4BOTWZ2KKAhhWM88Qtj6+robK5fdyr59wc56
7trIlEKOvaZQ5Y8wWeAJTTPrLeOHKT0XdjENjWZptEiP661Dr9t8pojwohxq67FSKWn7VkMIAwAAiIDScLmp+4W1W11G/0xpKJNTEQUhDOuZRwgTy8vLrnryZLDDnrt+CDI1KpbGponQ6FO9ZTS/P9Kmx7YOYUGq3jr8ZaSFR3sekdUTJ5I2bweEMAAAgAjQCNObx08GA1AMaqRubn6+9mnbDyEM65lXCBMz09Nuvrc32GnPVY0w+d/HkmKzEabNpm32ukx/d8veMx0A661D+CFM6/CDXSTeOnDAzVSrjz5vGyCEAQAARMLwuUryvatQCMpTfSaN1GU1CiYIYVjPPEPY2tqaqwwPu0/27g123nMzPcIkRfo1f5of2ixcic2WUdDyl9FjG/XyT4MUm61D89s69FP4wS4C1bbJ/eE22rpdEMIAAAAi4d69e+7MYCm5CmEoDOWhPsvxU2fcnTt/fdPhdkMIw3rmGcLE0tKSm9xspCcP09/VMhWE0mw2bSvLCP/3tnnTgWur76vwJdPL56za9oNbt2ofsj0QwgAAACJCV0qM6SIdvzrSn9xQOmsIYVjPvEOYmJ6YcIs9PcFOPBbXxd5eNz06Wmvl9kEIAwAAiIyx8xdc7yu/C4aiLP3JS6+54cpopqchGoQwrGcMIez+/fvJ57i/Z0+wM4/FU22ZtKmdYtlGCGEAAACRodBzbmQ013uH6b2z/h6YDyEM6xlDCBMLCwtu+ujRYIcei+eVvj63ODdXa932QggDAACIkIcPHyZB7D9efi0Yktrp87/+3UYAO5d8hrwghGE9YwlhYmp83C11dwc79Vgc1YZTGZyGaBDCAAAAIkWjUDo18fCbbwXDUqvVRTj0HbC8TkH0IYRhPWMKYaurq4+upLd7d7Bzj/GrtlMbqi2zghAGAAAQObowxjsDg+6fnn05GJ5aoW7G/IcTA+7ylWu5BzBBCMN6xhTCxPzsrLt2+HCwg4/xq7ZTG2YJIQwAAKAA6GbO+o6Wbuj89R88HwxS21HhSyNtZ4fKyXvEAiEM6xlbCBPVSsUtd3UFO/kYr2qzarlca8XsIIQBAAAUiNu3b7vBoWH3mzfeSkbGtnNPMS2jGzD/9vdvu9LGuubm56MY/fIhhGE9YwxhKysrbnxgwK3v2hXs7GN8qq3UZmq7rCGEAQAAFBDdPHn0wsWkM6ow9a//eSgJVhrZ+ru9z/45bOmxRs40TVc87H/nlBsYLCXfNdM6YgtfBiEM6xljCBM3rl1zNw8eDHb4MT7VVmqzPCCEAQAAFBydRnjr1i1XHhlzpXIlGSk79MYxN1gaSh7rVMPz1YvJd8vu3bsXbfDyIYRhPWMNYevr626sXHYr+/YFO/0Yj2qjsVIpabM8iD6E2Y3wsHmzuPFcLHz++efJf3hHJqru7Mg5NzAc3iYYt2q30uiIOz81mbSn2nWnQO1rnTup9vk82f2y++xBfpeYbxa1XajzjSi1f8TK8vKyq548Gez4YzxWT5xI2iovog9h0xMTbrG3N7jxcOsu9vS46QsXalu1c1Fnq3r5khvc6Lz/9J3fu6++st995cUfuy//7Cn3pUARx3hVe6nd1H5qx387dsSdHSol7bsTOtXUvta4U2pfmndv30lORzw1dqn2SvEghGE9Yw5hYmZ62s1Tw6P11oEDbqZarbVWPkQdwpaWltzkW28FNx427mR/f7JNO5Wr12fcmY1O+jeOvLzRgf9OsGhjsVW7/v1vX0za+caNG7WW7zyofa2102tfiDcHx5MQ9vRLfbVXigchDOsZewhbW1tzleFh98nevcG6hPmpNknu67bRRnkSbQhLdt6NPzB23taZ7HQb2zTvna7V6BS1SvW86z7e5/7m+X8OFmvsLNXOXcdeT9q9005RpPa13k6tffVQ+FII+9p3e2qvFA9CGNYz9hAmkn+o9fcH6xLm59SxY+6DW7dqrZQf0YawmampZKgwtPFw+ybDrxvbtlNQB3xopOJ29/0qWKSxs33itV8k7d9JQYza1x47rfbVQ98DU/hSCJOXbrxXm1Is1MnmNHIMqf2iCCFMJKeW9/QE6xJmr07znx4drbVOvkQZwvhCY3vN+4uIrUQjIU8SwHa0SRA7P1bbI4oNta+9dlLtq8fIpet/DmDy2Vffqk0pFrowj74XGvq7x52t9ovTw6XanhI3dpGl+3v2BOsSZqfaIGmLSL5XHl0I49Ke7Te5JOfGNs7rkpytQt8B63n7zWCBxp2lTk3U/lBkqH3tt1Nq3+OwUxHNop6SqCvb6sI8ob953NlqvzhdKdf2lPhZWFhw00ePBusSZueVvj63ODdXa5X8iS6EcZO7bMzz5nStQP/F0MUZ+A4YSu0HAxv7Q5Gvmkjty8ai176t8PV/eeGvQpi8c/fj2tTiMDV9ObkyauhvHne22i90C5oiMTU+7pa6u4N1Cduvtv1UJKchGlGFsJWVFTd29qxb37UruAGxdWobjw8MJNu8iOgy5boKYqg4485UV03UflFEqH3ZWfTa9zjs0vRpdbXEoqF7A/YcPxr8e8edrW5Zov2jSKyurj66It/u3cHahO1T21zbXm0QE1GFsGql4pa7uoIbEFuvtnW1XJzhfEMXYdB9wLgMPfpqfzizUWSLeJEOal+2FrX2bYVDbw8HQ9h3f/pqbY7ioL9l3RuQWo++2h+0XxSx1s/Pzrprhw8H6xK2T21zbfvYiCaEaePMHDkS3HjYPmcOHXLz8/O1VigG+u/Xs/x3FAM+U8D/jlL78rGItW8rPNn9cjCESV01sWhcmp5ORrlDf++4M9X+MHTxfG0PKR780y1bY/6nWxQhjCHa/EyGaAcHoxuirYfOA+d7AhhS+8X5qcnanhI/1L78LGLt2wq6HL08cPR0Erx0kQ57rYghTN/z1Pc9+f4vSu0Hp0uDhf7+r06F1inRnH7efmM//TyKEJZ8WfG554IbENtv8mXFjTYoClwxCzdT+8WJc8W4d4yg9uVr0WpfI5wau5SEsKJent5HVz7VzfhDf/O4s+yEK+EKLsSUjbFfiCn3EKZLRU5zN/Hc1WU7dQnVIsC9Y3Azi3TvGGpfHBap9jVCJ4UwoXsB6p6Aob973BnqnqADYyO1PaLYcEuS9pvckqRUivqWJLmGMA0ncwO7OIztBnb10OfU3fJDRRp3ttovtH/EDrUvHotU+xqh00KYLsIwNFIhiO1Qd28EsDPnhgt5MY7N4Ob87bUIN+fPNYRNT0y4xd7e4MbD7F3s6XHTFy7UWide1GEKFWlEWYQQRu2Ly6LUvkbotBAm1AGvVM8np6TxHbGdodpZ7a0RsE4KYMbM9LSb51jQcm8dOOBmqvHfRy63ELa0tOQm39o4OAQ2HubnZH9/0jYxQwjDesYewqh9cVqE2tcInRjCDH0nSBfr0FXyuHx9Z6p2VfueKg26iatXai3feaytrbnK8LD7ZO/eYF3CxtW2TC54tbFtYyeXEJbsdBsdJXa6+Ex23o22iXnnJYRhPWMOYdS+eC1C7WuETg5hQqePjkxeTO4X1fX715Iro+rCPPpeKKerF0u1l9pN7ad21K1GdM9HtW+nnSYcQv/8mTp2LFiXsHG1LT+4dau2deMmlxA2MzWVDBWGNh7mbzKMu9FGsUIIw3rGHMKofXEbe+1rhE4PYYZOUdO9AYeq4+50pZxcmEc1AIulLrilK9vqFjRziwsdeephPZJT1Ht6gnUJt65O858eHa1t1fjJPITxRcRiGPMXGlWwQ51vRKn9I0aofcWwCF/m3go7JYQBdAJ2sSZs3iKNnmYawrgkZ3FMLu250VYxXtpTf2Shzjei1P4RG9S+4hhz7WsEQhgAQNxkGsK4OV2xjPUmd4QwrGeMIYzaVyxjv8HnViCEAQDETWYhbGVlxY2dPevWd+0KHvQwPtVW4wMDSdvFBCEM6xlbCKP2Fc9Ya18jEMIAAOImsxBWrVTccldX8ICH8ao2q5bLtVaMA0IY1jO2EEbtK6Yx1r5GIIQBAMRNJiFsfnbWzRw5EjzQYfzOHDrk5ufna62ZP4QwrGdMIYzaV2xjq32NQAgDAIibtoew1dXVRzdN2707eJDD+FXbVQYHk7aMAUIY1jOWEEbtK76x1b5GIIQBAMRN20PY1Pi4W3ruueABDovjUnd30pYxQAjDesYSwqh9nWFMta8RCGEAAHHT1hC2ODfnpvv7gwc2LJ5X+vrcwsJCrXXzgxCG9YwhhFH7OstYal8jEMIAAOKmbSHMbjx3f8+e4EENi6faMmnTnG+ERwjDeuYdwqh9nWcsta8RCGEAAHHTthA2PTHhFnt7gwe03Hz/fedmZ8PTOlH9rvqdQ9O26WJPj5u+cKHWyvlACNu+5dtz7upHd4LTpPjbN18KTiuKeYewKGtflnZonY2h9jUCIQwAIG7aEsKWlpbc5FsbhT9wIMtV/Rez2VOEhL8O+67A/v1/PV8M6h43+nyhaU04ufH7q43zghC2fRdX77nXr08Gpz09cjLZvqFpRTLPEBZt7cvSVtRZraMNtatZ8659jUAIAwCIm5aHsLW1NVfZ6AR9sndv8CCWmwpJopmwZOsITYtR0WxnKKDaVm2sts4DQtj2FQpboWkKZwppoWlFMq8QFm3ty9JW1FnZinW0wbxrXyMQwgAA4qblIWxmasrdOnAgeACrq53CotEbww7CChJ6XfMIO9VFr/ukT4Hxz9/XND3X66Ewlf7Pq4/m1/I++jyaTz/9903P54cgew/DPk9I+4yGf1qh3sN+H2Hv4W87+xybrc//zMI+l/1ej1FtrLbOg6KEMAUaQ6cBCpv28Z8eJM+FvabTAI10GPLn96fZyJaPvW5Y6LL124iX8Nel0xT9UxXT690svMVmXiFs27UvS+vVWf1UTbHaYTWnnXXWX1bv49dHYeuKyDxrXyMQwgAA4qalIWx5edlVT2508AIHrsdqB2M/UFgnwDoF/sHfDtbWgbCOgj3X+mx56wzYcy2bPrgLW1bYe2m9Fky0vK3DFPaZ
Nc1fb6hDImy68Dskpv0utl5b1p5bB8qe22v2OaWw5+n12XP/sb/sFq2eOJG0edYUIYQp3PgBRyHKnvthR8HIHmseO1VQP+2xUIjTY3tugciw73EZtqze09Zvoco+hx/KbF5bLh0a9dz/fWI2jxDWVO3L0np11mqqX+PaWWfTy9q8qpvbqEdZmlftawRCGABA3LQshK2vr7uxctmt7NsXPGg9VuEHEh2c7UDsPzZ1wE4HGKFOgnUc/Gla3oKV1mcHf+mHknodAH8d0jod+uk/tun+etOdFyn0uj030+8j/d9Xj/3poXX7v2N6fXpsHZ7Qttqiamu1udo+S2IPYTbSZMFI+sFLYSYUaIQftmQ6/PjrTocoKfx1aFl7rp8KejZNCj/s+eHOX6/WY58/drMOYU3XviwVm9VZvy6Y7aqzWjb9XmZ6uQjNq/Y1AiEMACBuWhbCbly75m4ePBg8YD1W/+Bs6mBuB+J0RyAUOiwEaVroIG7T9DgUSqwjovfyp/n665B+RyLUgfE7Kf57SPu8/u/gv+6/jxRaX2i59Lqlv83S+J+zyQ6P2lxtnyWxh7BQ2PFHuaThByYLWMICkMJPGgt3Wp//PhbK/PCn6f66/PfzQ5y9t173P4dRlAAmsw5hTdW+LLW66b/m19l0XbT5/Vrj16dm6qz/vmn92hWxedS+RiCEAQDETUtC2MrGAXXs7Fm3vmtX8GD1WHXAtYOzKfwQ4XcEQp0JzWvhIn2A1zRh6xDWUZBazjoLm3UArPPhv6Zl7H38Dobpd1L00++Q+J/X195ns99Xj9PLad3+e9v8+hlan6+WC/2+W1RtPj4wsLGajfVkROwhTIElNHplYSj9uh+apB/i0uHNV/P54ehxocwPZDa/sMf2mdPrKZpZhrCma1+W6u88XaOE/f2rrvh10a87pl+3tC6rbzZNWK0R/vq0nNVALevXQ1+xWb2KyDxqXyMQwgAA4qYlIaxaqbjlrq7ggWpL6kAu/Od2oA91BCxY2AHenltnwg8ltrwfXIQtawdQvyPidyzssXUw7HXpdyTS09MdEq3X3kNqOf99fIU/r7D30U/73Uy9Zr+fbQvhP/c7Q771pm1RtX21XH60rgwo0kiYBSGh5wo6For8EOSHHj/E6XV/9Mo3PbKlx+nwl/4cfmgTtrxet2n+5yqiWYawpmtflqreCP95um5YvfJfa0ed1XO/jlkttPX4nyNis659jUAIAwCIm6ZD2K0bN9zMkSPBA9SWteBj+AfyUOiw1338IGGdBaF16cBvB3npv5emaR476FsnwPA7A4YFIuG/r3U0DHvdPo+/Ls1r60mrz+RjHRe52XI++kz+NktvK9u+9rvafE04c+iQm5+ff7S+BlFn4dKN92rPHk/sIUz6KAxZOPJDmUgHMuEHMhst87FlhD+yVS+U2UiXNPx59Z6ax5778wk/vMVuoyGs0f3PaEnty9J6ddbqoD+/bFed9ZcV/no1n/DXFbHN1L52QggDAIibpkLY6uqqq5RKbm337uDBacsKP6Bg4dQ+UBkcTPaJRvnuT19NOgvy6Zf6ks7DZw8e1qb+T4oQwjA/Gw1hje5/omW1L0sFdbblNlP72gkhDAAgbpoKYVPj427pueeCB6Ytq/+Ahv4Di4Vzqbs72Scaxe8E+6pDfOjtYffu7Tu1OR9BCMN6NhPCtrL/iZbUviylzrbV7da+dkIIAwCIm22HsMW5OTftn0KyXXW6S+h0QyykV/r6/kdnthV+7bs97sDR08lpY4QwrGdo/2lWf/9rWe3LUups21Xt+49fH032kxjUPxG07xLCAADiZFsh7MGDB0lH+O4Pfxg8GOHOVftEugPbCtUJtlPFTg2cCXa+EWVo/2lW2/+Ol6vJ/kftw7Ttqn3NqkAGAADxse2RsIWFBTd99GjwYIQ7V/03WCMFjbDZ6WBPdr/859PB/O/oMBKG9WzV6Yib7X/UPgyp2verN064NwfHo/LO3Y9rey4AAMRE898J6+4OHpBw55l8L2J0tLZ3bB3rBGu0QY83+x6OQQjDem43hG11/xPUPvTdbu0DAICdS1MhrJBXCMO2mFwhbGNf2M4VwtTp3coV6QxCGNaz0RDW6P4nqH1oNlP7AABg59JUCBPzs7Pu2uHDwYMTbkNRwMtIax/QvpAFhLD6+jdp3ok2GsK2C7XPU1de3MrFSuz+YKFpUvcGUx0JTYvULGsfAAB0Dk2HMFGtVNxyV1fwAFUYdeWwvK8eVtDLSKvtq+VybW9oP4Sw+uomzM3eXNm/0XPRzCqEiY6ofdvRQoceW7Dayj+PdBn3enVW9U/zhKZFaNa1DwAAOoeWhLCVjYPq+MCAW9+1K3igwi2qjk3BLiOtNlfbax/ICkJYfRWeFKJC07aqQlyz68jLLEMYtW/DRv55pJEuGZomRUHOBMij9gEAQOfQkhAmbly75m4ePBg8WEVv+j+5/qkl/n9l1dEw7DXN63cq1CHxp9u6Dc2fnldo3QU8FUdtrrbPkiKHMDtV8PXrk7Xfxv1V2FGA8qf5r/vY61LLGwpPWr/ex5bT+vx5/RGu9LJ6LY2tqyhmGcJE9LXPDwlW2+z1UD2y56pHhh6rRlmN9EestA6ty5bT64bVNZtX8+mxX0ttnen3lz5+nY3APGofAAB0Di0LYevr626sXHYr+/YFD1hRa50CPU53BKxzoQ6AdQLUabDH6Y6M1mXL2Lr0038emmadI3teANXWY6VS0vZZUuQQZqHHAo8FLptu2HOpUOWfXqgQZc9tff40/7nwQ5SW0zJ6HFpW8/7tmy8lr+unTSuSWYewqGufapHVI6k6F6pp6ef6aTVRahl7bv9YsvCkea0GWgCzaVbX7Llhz7Vee0+/dtp76DX/uS2Xs3nVPgAA6BxaFsLE8vKyq548GTxoRa3/n9x0J8LUdJvHV/jBye/IaH4/oOmxdWQ0zeaTkXUytmL1xImkzbOmyCFMIcgfiVLoEQo8Fn780KSQlr7IhsKTrUP4I13+/LZumyZtFE6Phf9eZmi5Ipl1CBNR1j77R49fU/z65Nc9KbSM1SK/rvnz2nptmmqahSU99mueP29ovfostl7/s/mPpdVle56zedU+AADoHFoawsTM9LSb7+0NHriiNR2WdPAX/n+CpWHzhoKT3yFJ469P+J0RLZN+v4i9deCAm6lWH/0eGVPkEOaHIKnHwh6nA5c/6mVakAuFJU2z+dPr80e4/PdN64e8IppHCBPR1T7VqXRN8euTX3P8kBUKPH6N9Of1a2AoZKXXm/48mmZhy/9sepzGXy5H86x9AADQObQ8hK2trbnK8LD7ZO/e4AEsSnXA9zsO/uvW8TDtP7vqcKQ7Ff40v3PiLy9DnRV1RqyzErlq2+QeSRttnQdFDmHCP83PHxlT+EkHLk2z0wdNC3KhICVsfj+QSb1uoSwU+Ewtk37PIplXCIuu9inc+DXF6pPVHatDeizsddU8v67ZfBaQtF6ri1rG5rX1+zVP0yxkaRl7bApbr7BlhX2eiMy79gEAQOfQ8hAmlpaW3GSEB9Cg1sHQT3UG/NAl9Jo6MtY50HNhj60DYusR/vPNtoOwzoc6JiId+CJVbfvBrVuPPnMOFDWE2ciVApD/3E4JDAUuP6TZcwtPtryFOr0ubH1+CLPAZuuy57asnttyWg8hbHtEVfv8MJWuT6bwg5L0a5zNI6wGan6rXXoPC3rpmqfXhc1rz/VY6j3t82kZf5qw5SIy79oHAACdQ1tCmJiemHCLPT3BA1lU6kBvHQFpHQVhocjvwAjrjEgfdSSsQyK1vI//Pv4068jE0nmr42Jvr5seHa198HwoaghTsFEIsrAkLPjI9HP/dcMPZFLPDQtlNs2eC82n9/fDlb+shTWpeQx7rUjmGcJEVLXPJ12fpGqSX5f81w0tZ/NYLbQaqPVZnZT2DyVhtdXmFX7d89/XaqA917JpbFpOxlD7AACgc2hbCLu/cYBVZ+j+nj3BAxoWT7Vl0qZ+By0HihrCFHSKPMJUFPMOYdS+zjOW2gcAAJ1D20KYWFhYcNNHjwYPalg8r/T1ucW5v4yS5EVRQ5hGwEIjXdha8w5hgtrXWcZS+wAAoHNoawgTU+Pjbqm7O3hgw+KoNpyK5FScIoYw/8qEoenYOmMIYYLa1xnGVPsAAKBzaHsIW11dfXQ1qd27gwc4jF+1ndpQbRkDRR0Jw2yMJYRR+4pvbLUPAAA6h7aHMDE/O+uuHT4cPMhh/Krt1IaxQAjDesYSwgS1r9jGVvsAAKBzyCSEiWql4pa7uoIHOoxXtVm1XK61YhwQwrCeMYUwQe0rpjHWPgAA6BwyC2ErKytufGDAre/aFTzgYXyqrdRmaruYIIRhPWMLYdS+4hlr7QMAgM4hsxAmbly75m4ePBg86GF8qq3UZrFBCMN6xhbCBLWvWMZa+wAAoHPINIStr6+7sXLZrezbFzzwYTyqjcZKpaTNYoMQhvWMMYRR+4pjzLUPAAA6h0xDmFheXnbVkyeDBz+Mx+qJE0lbxQghDOsZYwgT1L5iGHPtAwCAziHzECZmpqfdfG9v8ACI+XvrwAE3U63WWis+CGFYz1hDmKD2xW3stQ8AADqHXELY2tqaqwwPu0/27g0eCDE/1SbJvY022ihWCGFYz5hDGLUvXotQ+wAAoHPIJYSJpaUlN9nfHzwYYn5OHTvmPrh1q9ZKcUIIw3rGHMIEtS9Oi1D7AACgc8gthInpiQm32NMTPCBi9i729rrp0dFa68QLIQzrGXsIE9S+uCxK7QMAgM4h1xB2//79pMN0f8+e4IERs1NtkLTFRpvEjj7nlwKdb0TtF0UIYdS+eCxS7QMAgM4h1xAmFhYW3PTRo8GDI2bnlb4+tzg3V2uVuBkYHnJf/tlTwU447my1X5weLtX2lLih9sVhkWofAAB0DrmHMDE1Pu6WuruDB0hsv9r2UwU6FefsyDn3lRd/HOyE485W+8XpSrm2p8QPtS9fi1b7AACgc4gihK2urj66KtXu
3cEDJbZPbXNte7VBUZiavuy++sr+YCccd7baL0YminOJcWpffhax9gEAQOcQRQgT87Oz7trhw8GDJbZPbXNt+yJx584d13P8aLATjjvbfzt2JNk/igS1Lx+LWPsAAKBziCaEiWql4pa7uoIHTGy92tbVcnFO3TI+//xzd3ao5L7U851gRxx3ptoftF9o/yga1L5sLWrtAwCAziGqELaysuLGBwbc+q5dwQMntk5tY21rbfMicml62v39b18MdsZxZ6r9Yeji+doeUiyofdlZ9NoHAACdQVQhTNy4ds3dPHgwePDE1qltrG1dVHQ56YGhkvub5/852CHHnaX2g9OlwUJfZpzal41Fr30AANAZRBfC1tfX3Vi57Fb27QseQLF5tW3HSqVkWxeZq9dnXPfxvmCnHHeWXcdeT/aHIkPta7+dUvsAAKD4RBfCxPLysquePBk8iGLzVk+cSLZxJzB0fsw98dovgh1z3Bk+2fcrNzA2Utsjig21r712Uu0DAIBiE2UIEzPT026+tzd4IMXte+vAATdTLc4lvB+HLsIwNFIhiO1Qd28EsDPnhgt5MY7NoPa1x06rfQAAUGyiDWFra2uuMjzsPtm7N3hAxcbVtkzuSbSxbTsJdcAr1fPJKWl8R2xnqHZWe2sErJMCmKD2td5OrX0AAFBcog1hYmlpyU0dOxY8qGLjalt+cOtWbet2HvpOkC7Woavkcfn6zlTtqvY9VRp0E1ev1Fq+86D2tdZOr30AAFA8og5hYnpiwi329AQPrLh1F3t73fToaG2rdi66Ot7I5MXkflFdv3/NffWV/e4rL/7YfflnT2104MMde4xTtZfaTe2ndnzm2BF3plRK2rfIV0HcKtS+1rhTah8AABSL6EOYOltDQ0PYAndCx9XQKWp37txxQ9Vxd7pSdqeHS8FtgnE7MDzkTpwbciMTVTe3uNBxpx7Wg9rXOndS7QMAgGIQfQgDAAAAAADoJAhhAAAAAAAAGUIIAwAAAAAAyBBCGAAAAAAAQIYQwgAAAAAAADKEEAYAAAAAAJAhhDAAAAAAAIAMIYQBAAAAAABkCCEMAAAAAAAgQwhhAAAAAAAAGUIIAwAAAAAAyBBCGAAAAAAAQIYQwgAAAAAAADKEEAYAAAAAAJAhhDAAAAAAAIDMcO7/AyPAeqvrj91cAAAAAElFTkSuQmCC", extent = {{-78.257, -39.233}, {78.257, 39.233}}), Line(visible = true, origin = {38.435, -25}, points = {{-186.667, 0}, {93.333, 0}, {93.333, 0}}, color = {76, 112, 136}, thickness = 1), Text(visible = true, origin = {93.668, -30.5}, textColor = {76, 112, 136}, extent = {{-38.285, -10.5}, {38.285, 10.5}}, textString = "Event-driven Process Chain", fontName = "Lato", textStyle = {TextStyle.Bold}), Text(visible = true, origin = {-76.8, -75}, textColor = {76, 112, 136}, extent = {{-28.2, -2}, {28.2, 2}}, textString = "Cloud within producing", fontName = "Lato"), Text(visible = true, origin = {-17.6, -75}, textColor = {76, 112, 136}, extent = {{-11.4, -2}, {11.4, 2}}, textString = "inventory", fontName = "Lato"), Text(visible = true, origin = {50.58, -62}, textColor = {76, 112, 136}, extent = {{-12.58, -2}, {12.58, 2}}, textString = "installedBase", fontName = "Lato"), Text(visible = true, origin = {0, 55}, textColor = {255, 0, 0}, extent = {{-140, -3}, {140, 3}}, textString = "1 s === 1 mo", fontName = "Lato")}, coordinateSystem(extent = {{-160, -100}, {140, 80}}, preserveAspectRatio = true, initialScale = 0.1, grid = {10, 10})));
end SimpleProductionChain;
